def upper_str(func):
    def wrapper(*args, **kwargs):
        upper_args = [str(i).upper() for i in args]
        upper_kwargs = dict([(k, v.upper()) for k,v in kwargs.items()])
        func(*upper_args,**upper_kwargs)
    return wrapper

old_print = print
@upper_str
def print(*args, **kwargs):
    caps = tuple(c.upper() if isinstance(c, str) else c for c in args)
    if len(kwargs) == 0:
        old_print(*caps)
    elif len(kwargs) == 1 and 'sep' in kwargs:
        old_print(*caps, sep=kwargs['sep'])
    elif len(kwargs) == 1 and 'end' in kwargs:
        old_print(*caps, end=kwargs['end'])
    else:
        old_print(*caps, sep=kwargs['sep'], end=kwargs['end'])